/******************************************************************************* 
 * Copyright (c) 2008 xored software, Inc.  
 * 
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0 
 * which accompanies this distribution, and is available at 
 * http://www.eclipse.org/legal/epl-v10.html  
 * 
 * Contributors: 
 *     xored software, Inc. - initial API and Implementation (Yuri Strot) 
 *******************************************************************************/
package com.xored.glance.ui.sources;

import org.eclipse.core.runtime.IProgressMonitor;

/**
 * @author Yuri Strot
 * 
 */
public interface ITextSource {

	/**
	 * Return text blocks associated with this source
	 * 
	 * @return text blocks
	 */
	public ITextBlock[] getBlocks();

	/**
	 * Add text source listener
	 * 
	 * @param listener text source listener
	 */
	public void addTextSourceListener(ITextSourceListener listener);

	/**
	 * Remove text source listener
	 * 
	 * @param listener text source listener
	 */
	public void removeTextSourceListener(ITextSourceListener listener);

	/**
	 * Return current source selection. This selection using to identify
	 * where start search
	 * 
	 * @return source selection
	 */
	public SourceSelection getSelection();

	/**
	 * Focus match
	 * 
	 * @param match match to focus
	 */
	public void select(Match match);

	/**
	 * Highlight matches
	 *
	 * @param matches
	 */
	public void show(Match[] matches);

	/**
	 * @param monitor
	 */
	public void index(IProgressMonitor monitor);

	public boolean isDisposed();

	public void dispose();

}
